The present invention relates to electronic circuitry and, more particularly, to timer circuits for use with memories.
Memory controller circuits can be used in a variety of computer systems (e.g., desktop personal computers, notebook computers, personal digital assistants, etc.) to facilitate the computer system""s processor in accessing memory chips. These memory chips generally include the main memory of the computer system, which typically includes several dynamic random access memory (DRAM) chips. DRAM chips include, for example, synchronous DRAM (SDRAM), extended data out (EDO) DRAM, Rambus (R)DRAM, DDR (double data rate) and DRAM chips. The memory controller provides a memory interface for connecting to one or more of such DRAM chips, and a system interface to connect to the system processor(s). The memory controller uses these interfaces to route data between the processor and the DRAM chips using appropriate address, control and data signals.
Generally, the DRAM chips used in modern computers are organized in groups and mounted on one or more xe2x80x9cmemory modules.xe2x80x9d Common memory modules in use today are known as DIMMs (Dual In-line Memory Modules) that typically include one or more DRAM chips mounted on a small circuit board.
Typically, a modern DIMM can store 32, 64, 128, 256, and 512 megabytes (Mb) of memory, which corresponds to the total memory capacity of the memory chips on the DIMM. The memory on each DRAM chip is logically arranged into a memory array of several rows and columns of memory xe2x80x9ccells.xe2x80x9d Each memory cell has a particular address, and stores a single bit of data. This memory array is then logically partitioned into one or more xe2x80x9cbanksxe2x80x9d of memory. In modern DRAM chips, memory is accessed on a xe2x80x9cpagexe2x80x9d basis, wherein the memory cells for a given row within a bank form a xe2x80x9cpagexe2x80x9d of memory.
Accessing DRAM is generally a multi-step process that is performed by the memory controller in the following manner. First, the page(s) corresponding to the requested data or instructions are identified. Once the page(s) are known, the appropriate bank corresponding to the page(s) is/are determined. Generally, the particular page(s) of data requested will initially be in one of three states: page hit, page empty, or page miss. If the state is a page hit, a desired page is already loaded into a bank of sense amplifiers (amps) corresponding to the memory bank the page is stored in. If the state is a page empty, data corresponding to the desired page will need to be loaded into an appropriate sense amp bank via an xe2x80x9cactivatexe2x80x9d command before it can be accessed. If the state is a page miss, the specified bank contains a different page of data than that requested. This existing page will first be required to be xe2x80x9cclosed,xe2x80x9d which includes writing it back to the DRAM memory array using a xe2x80x9cprechargexe2x80x9d command, and then loading the appropriate page into the sense amp bank using the activate command.
The foregoing three states have an impact on access latency. A page hit state means the page is ready to be accessed with no additional latency. A page empty state requires an activate command, while a page miss requires both pre-charge and activate commands, each of which may take one or more clock cycles. The actual penalty (i.e., delay) for each type of access will depend on the memory technology, memory organization and architecture, and on other rules specific to each memory technology. The general rule however is that a page hit is fastest, and a page empty is slower, and a page miss is slowest. Also, keeping a page open dissipates power. Thus, from a power standpoint it may be desirable to close pages sooner rather than later.
Some existing page-management policies include timer mechanisms. With timer mechanisms, xe2x80x9cidlexe2x80x9d timers are used to determine that memory in general, or a specific bank in particular, have been idle for some predetermined number X clock cycles. If X clock cycles have transpired with no accesses, the page(s) is/are closed. The counters may be per bank, in which case only that bank""s pages will be closed when the timer expires, but such mechanisms would require a large number of timers in DIMMs with a large number of banks. Each timer occupies area and dissipates power and, thus, a large number of timers may be undesirable in some applications. Other implementations may have a timer per DIMM or a timer for all of the system memory. In such implementations, all pages in a DIMM or all of the system memory may be closed when the timer expires. However, such timer mechanisms provide relatively coarse page management.